package 实验室;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import static 实验室.Type.EUR;
import static 实验室.Type.JPY;
import static 实验室.Type.RMB;
import static 实验室.Type.RUB;
import static 实验室.Type.USD;

/**
 * Description
 *
 * @Author: SunAo
 * @Date: 2022/5/18 16:31
 */
public class 枚举值排序 {

    final static List<Customer> list = Arrays.asList(
            new Customer("张三",RMB,12),
            new Customer("李四",JPY,444),
            new Customer("王五",USD,33),
            new Customer("周六",RUB,22),
            new Customer("孙七",EUR,120)
    );

    @Test
    public void 排序(){
        List<Customer> list2 = list.stream().sorted((v1, v2) -> {
            if (v1.getMoneyType().getSort() == v2.getMoneyType().getSort()) {
                return 0;
            } else if (v1.getMoneyType().getSort() > v2.getMoneyType().getSort()) {
                return 1;
            } else {
                return -1;
            }
        }).collect(Collectors.toList());

        for (Customer customer : list2) {
            System.out.println(customer.getName());
        }
    }

    @Data
    @AllArgsConstructor
    public static class Customer{
        private String name;
        private Type moneyType;
        private Integer money;
    }

}

@Getter
@AllArgsConstructor
enum Type{

    RMB("人民币",1),
    USD("美元",2),
    EUR("欧元",3),
    JPY("日元",4),
    RUB("卢布",5);

    private String name;
    private Integer sort;

}

//中国：人民币（内地地区，Renminbi；RMB、CNY），港币（香港特区 [1]  ），澳门币（澳门特区 [2]  ），新台币（台湾地区）
//        阿富汗：阿富汗尼（Afghani；AFN）
//        阿联酋：阿联酋迪拉姆（United Arab Emirates Dirham；AED）
//        阿曼：里亚尔（Omani Rial；OMR）
//        阿塞拜疆：马纳特（Azerbaijani Manat；AZN）
//        巴基斯坦：巴基斯坦卢比（Pakistani Rupee；PKR）
//        巴勒斯坦：新谢克尔（Israeli New Shekel；ILS）
//        巴林：巴林第纳尔（Bahraini Dinar；BHD）
//        不丹：努扎姆（Bhutanese Ngultrum；BTN）
//        朝鲜：朝鲜元（North Korean Won；KPW）
//        东帝汶：美元（United States Dollar；USD）
//        菲律宾：菲律宾比索（Philippine Peso；PHP）
//        格鲁吉亚：拉里（Georgian Lari；GEL）
//        哈萨克斯坦：坚戈（Kazakhstani Tenge；KZT）
//        韩国：韩元（South Korean Won；KRW）
//        吉尔吉斯斯坦：索姆（Kyrgyzstani Som；KGS）
//        柬埔寨：瑞尔（Cambodian Riel；KHR）
//        卡塔尔：卡塔尔里亚尔（Qatari Rial；QAR）
//        科威特：科威特第纳尔（Kuwaiti Dinar；KWD）
//        老挝：基普（Lao Kip；LAK）
//        黎巴嫩：黎巴嫩镑（Lebanese Pound；LBP）
//        马尔代夫：拉菲亚（Maldivian Rufiyaa；MVR）
//        马来西亚：林吉特（Malaysian Ringgit；MYR）
//        蒙古：图格里克（Mongolian Tögrög；MNT）
//        孟加拉国：塔卡（Bangladeshi Taka；BDT）
//        缅甸：缅币（Myanmar Kyat；MMK）
//        尼泊尔：尼泊尔卢比（Nepalese Rupee；NPR）
//        日本：日元（Japanese Yen；JPY）
//        沙特阿拉伯：沙特里亚尔（Saudi Riyal；SAR）
//        斯里兰卡：斯里兰卡卢比（Sri Lankan Rupee；LKR）
//        塔吉克斯坦：索莫尼（Tajikistani Somoni；TJS）
//        泰国：泰铢（Thai Baht；THB）
//        土耳其：土耳其里拉（Turkish Lira；TRY）
//        土库曼斯坦：马纳特（Turkmenistani Manat；TMT）
//        文莱：文莱元（Brunei Dollar；BND）
//        亚美尼亚：德拉姆（Armenian Dram；AMD）
//        乌兹别克斯坦：苏姆（Uzbekistan Som；UZS）
//        新加坡：新加坡元（Singapore Dollar；SGD）
//        叙利亚：叙利亚镑（Syrian Pound；SYP）
//        也门：也门里亚尔（Yemeni Rial；YER）
//        伊拉克：伊拉克第纳尔（Iraqi Dinar；IQD）
//        伊朗：伊朗里亚尔（Iranian Rial）
//        以色列：新谢克尔（Israeli New Shekel；ILS）
//        印度：印度卢比（Indian Rupee；INR）
//        印度尼西亚：印尼盾（Indonesian Rupiah；IDR）
//        约旦：约旦第纳尔（Jordanian Dinar；JOD）
//        越南：越南盾（Vietnamese Dong；VND）
//        欧洲各国法定货币
//        阿尔巴尼亚：列克（Albanian Lek；ALL）
//        爱尔兰：欧元（Euro；EUR）
//        爱沙尼亚：欧元（Euro；EUR）
//        安道尔：欧元（Euro；EUR）
//        奥地利：欧元（Euro；EUR）
//        白俄罗斯：白俄罗斯卢布（Belarusian Ruble；BYR）、新白俄罗斯卢布（New Belarusian Ruble；BYN）
//        保加利亚：列弗（Bulgarian Lev；BGN）
//        比利时：欧元（Euro；EUR）
//        冰岛：冰岛克朗（Icelandic Króna；ISK）
//        波黑：波黑马克或称可兑换马克（Bosnia and Herzegovina Convertible Mark，Convertible Mark；BAM）
//        波兰：兹罗提（Polish Złoty；PLN）
//        丹麦：丹麦克朗（Danish Krone；DKK）
//        德国：欧元（Euro；EUR）
//        俄罗斯：俄罗斯卢布（Russian Ruble；RUB）
//        法国：欧元（Euro；EUR）
//        梵蒂冈：欧元（Euro；EUR）
//        芬兰：欧元（Euro；EUR）
//        荷兰：欧元（Euro；EUR）
//        黑山：欧元（Euro；EUR）
//        捷克：捷克克朗（Czech Koruna；CZK）
//        克罗地亚：库钠（Croatian Kuna；HRK）
//        拉脱维亚：欧元（Euro；EUR）
//        立陶宛：欧元（Euro；EUR）
//        列支敦士登：瑞士法郎（Swiss Franc；CHF）
//        卢森堡：欧元（Euro；EUR）
//        罗马尼亚：罗马尼亚列伊（Romanian Leu；RON）
//        马耳他：欧元（Euro；EUR）
//        马其顿：代纳尔（Macedonian Denar；MKD）
//        摩尔多瓦：摩尔多瓦列伊（Moldovan Leu；MDL）
//        摩纳哥：欧元（Euro；EUR）
//        挪威：挪威克朗（Norwegian Krone；NOK）
//        葡萄牙：欧元（Euro；EUR）
//        瑞典：瑞典克朗（Swedish Krona；SEK）
//        瑞士：瑞士法郎（Swiss Franc；CHF）
//        塞尔维亚：塞尔维亚第纳尔（Serbian Dinar；RSD）
//        塞浦路斯：欧元（Euro；EUR）
//        圣马力诺：欧元（Euro；EUR）
//        斯洛伐克：欧元（Euro；EUR）
//        斯洛文尼亚：欧元（Euro；EUR）
//        乌克兰：格里夫纳（Ukrainian Hryvnia；UAH）
//        西班牙：欧元（Euro；EUR）
//        希腊：欧元（Euro；EUR）
//        匈牙利：福林（Hungarian Forint；HUF）
//        意大利：欧元（Euro；EUR）
//        英国：英镑（Pound Sterling；GBP）
//        非洲各国法定货币
//        阿尔及利亚：阿尔及利亚第纳尔（Algerian Dinar；DZD）
//        埃及：埃及镑（Egyptian Pound；EGP）
//        埃塞俄比亚：比尔（Ethiopian Birr；ETB）
//        安哥拉：宽扎（Angolan Kwanza；AOA）
//        贝宁：非洲法郎（West African CFA Franc；XOF）
//        博茨瓦纳：普拉（Botswana Pula；BWP）
//        布基纳法索：非洲法郎（West African CFA Franc；XOF）
//        布隆迪：布隆迪法郎（Burundian Franc；BIF）
//        赤道几内亚：中非法郎（Central African CFA Franc；XAF）
//        多哥：非洲法郎（West African CFA Franc；XOF）
//        厄立特里亚：纳克法（Eritrean Nakfa；ERN）
//        佛得角：埃斯库多（Cape Verde Escudo；CVE）
//        冈比亚：达拉西（Gambian Dalasi；GMD）
//        刚果：中非法郎（Central African CFA Franc；XAF）
//        民主刚果：刚果法郎（Franc Congolais；CDF）
//        吉布提：吉布提法郎（Djiboutian Franc；DJF）
//        几内亚：几内亚法郎（Guinean Franc；GNF）
//        几内亚比绍：非洲法郎（West African CFA Franc；XOF）
//        加纳：塞地（Ghanaian Cedi；GHS）
//        加蓬：中非法郎（Central African CFA Franc；XAF）
//        津巴布韦：本国货币津巴布韦元自2009年2月起已停止流通，改为流通美元和南非兰特等9种货币。
//        喀麦隆：中非法郎（Central African CFA Franc；XAF）
//        科摩罗：科摩罗法郎（Comoro Franc；KMF）
//        科特迪瓦：非洲法郎（West African CFA Franc；XOF）
//        肯尼亚：肯尼亚先令（Kenyan Shilling；KES）
//        莱索托：洛蒂（Lesotho Loti；LSL）
//        利比里亚：利比里亚元（Liberian Dollar；LRD）
//        利比亚：利比亚第纳尔（Libyan Dinar；LYD）
//        卢旺达：卢旺达法郎（Rwandan Franc；RWF）
//        马达加斯加：阿里亚里（Malagasy Griary；MGA）
//        马拉维：克瓦查（Malawian Kwacha；MWK）
//        马里：非洲法郎（West African CFA Franc；XOF）
//        毛里求斯：毛里求斯卢比（Mauritian Rupee；MUR）
//        毛里塔尼亚：乌吉亚（Mauritanian Ouguiya；MRO）
//        摩洛哥：摩洛哥迪拉姆（Moroccan Dirham；MAD）
//        莫桑比克：梅蒂卡尔（Mozambican Metical；MZN）
//        纳米比亚：纳米比亚元（Namibian Dollar；NAD）
//        南非：兰特（South African Rand；ZAR）
//        南苏丹：南苏丹镑（South Sudanese Pound；SSP）
//        尼日尔：非洲法郎（West African CFA Franc；XOF）
//        尼日利亚：奈拉（Nigerian Naira；NGN）
//        塞拉利昂：利昂（Sierra Leonean Leone；SLL）
//        塞内加尔：非洲法郎（West African CFA Franc；XOF）
//        塞舌尔：塞舌尔卢比（Seychelles Rupee；SCR）
//        圣多美和普林西比：多布拉（São Tomé and Príncipe Dobra；STD）
//        斯威士兰：里兰吉尼（Swazi Lilangeni；SZL）
//        苏丹：苏丹镑（Sudanese Pound；SDG）
//        索马里：索马里先令（Somali Shilling；SOS）
//        坦桑尼亚：坦桑尼亚先令（Tanzanian Shilling；TZS）
//        突尼斯：突尼斯第纳尔（Tunisian Dinar；TND）
//        乌干达：乌干达先令（Ugandan Shilling；UGX）
//        赞比亚：克瓦查（Zambian Kwacha；ZMW）
//        乍得：中非法郎（Central African CFA Franc；XAF）
//        中非：中非法郎（Central African CFA Franc；XAF）
//        北美洲各国法定货币
//        安提瓜和巴布达：东加勒比元（East Caribbean Dollar；XCD）
//        巴巴多斯：巴巴多斯元（Barbados Dollar；BBD）
//        巴哈马：巴哈马元（Bahamian Dollar；BSD）
//        巴拿马：巴波亚（Panamanian Balboa；PAB）
//        伯利兹：伯利兹元（Belize Dollar；BZD）
//        多米尼加：多米尼加比索（Dominican Peso；DOP）
//        多米尼克：东加勒比元（East Caribbean Dollar；XCD）
//        哥斯达黎加：哥斯达黎加科郎（Costa Rican Colon；CRC）
//        格林纳达：东加勒比元（East Caribbean Dollar；XCD）
//        古巴：古巴比索（Cuban Peso；CUP）；古巴可兑换比索（Cuban Convertible Peso；CUC）
//        海地：古德（Haitian Gourde；HTG）
//        洪都拉斯：伦皮拉（Honduran Iempira；HNL）
//        加拿大：加拿大元（Canadian Dollar；CAD）
//        美国：美元（United States Dollar；USD）
//        墨西哥：墨西哥比索（Mexican Peso；MXN）
//        尼加拉瓜：科多巴（Nicaraguan Córdoba；NIO）
//        萨尔瓦多：萨尔瓦多科郎（Salvadoran Colón；SVC）、比特币（bitcoin）。 [7]
//        圣基茨和尼维斯：东加勒比元（East Caribbean Dollar；XCD）
//        圣卢西亚：东加勒比元（East Caribbean Dollar；XCD）
//        圣文森特和格林纳丁斯：东加勒比元（East Caribbean Dollar；XCD）
//        特立尼达和多巴哥：特立尼达和多巴哥元（Trinidad and Tobago Dollar；TTD）
//        危地马拉：格查尔（Guatemalan Quetzal；GTQ）
//        牙买加：牙买加元（Jamaican Dollar；JMD）
//        南美洲各国法定货币
//        阿根廷：阿根廷比索（Argentine Peso；ARS）
//        巴拉圭：瓜拉尼（Paraguayan Guaraní；PYG）
//        巴西：雷亚尔（Brazilian Real；BRL）
//        秘鲁：索尔（Peruvian Sol；PEN）
//        玻利维亚：玻利维亚诺（Boliviano；BOB）
//        哥伦比亚：哥伦比亚比索（Colombian Peso；COP）
//        厄瓜多尔：美元（United States Dollar；USD）
//        圭亚那：圭亚那元（Guyanese Dollar；GYD）
//        苏里南：苏里南元（Surinamese Dollar；SRD）
//        委内瑞拉：玻利瓦尔（Venezuelan Bolívar；VEF）
//        乌拉圭：乌拉圭比索（Uruguayan Peso；UYU）
//        智利：智利比索（Chilean Peso；CLP）
//        大洋洲各国法定货币
//        澳大利亚：澳大利亚元（Australian Dollar；AUD）
//        巴布亚新几内亚：基那（Papua New Guinean Kina；PGK）
//        斐济：斐济元（Fiji Dollar；FJD）
//        基里巴斯：澳大利亚元（Australian Dollar；AUD）
//        库克群岛：新西兰元（New Zealand Dollar；NZD）
//        马绍尔群岛：美元（United States Dollar；USD）
//        密克罗尼西亚：美元（United States Dollar；USD）
//        瑙鲁：澳大利亚元（Australian Dollar；AUD）
//        纽埃：新西兰元（New Zealand Dollar；NZD）
//        帕劳：美元（United States Dollar；USD）
//        萨摩亚：塔拉（Samoan Tala；WST）
//        所罗门群岛：所罗门群岛元（Solomon Islands Dollar；SBD）
//        汤加：潘加（Tongan Paʻanga；TOP）
//        图瓦卢：澳大利亚元（Australian Dollar；AUD）
//        瓦努阿图：瓦图（Vanuatu Vatu；VUV）
//        新西兰：新西兰元（New Zealand Dollar；NZD